package find.longest.substring;
/**
 * @Time 2020/1/2
 * @author 18795
 * @Need 给出一个字符串，获得其中最长但不包含重复字符的字符串的长度。
 * @Thinking 使用数组+滑动窗口。针对扩展型的ASCII
 */
public class OthersMethod {
    public int lengthOfLongestSubstring(String s) {
    	int len=s.length();
    	int result=0;
    	int[] index=new int[256];                    //保存字符在字符串中对应的下标
    	//遍历字符串获取符合题意的最长子字符串长度（i为滑动窗口前沿，j为滑动窗口下沿）
    	for(int i=0,j=0;j<len;j++) {
    		i=Math.max(index[s.charAt(j)], i);       //如果滑动窗口之后的一个字符在滑动窗口之中存在则移动滑动窗口前沿
    		result=Math.max(result, j-i+1);          //寻找最大滑动窗口值
    		index[s.charAt(s.charAt(j))]=j+1;        //更新字符所对应的下标
    	}
    	return result;
    }

}
